home *** CD-ROM | disk | FTP | other *** search
- package symantec.itools.awt;
-
- import java.awt.Canvas;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.LayoutManager;
- import java.awt.Panel;
- import java.awt.Polygon;
- import java.awt.Rectangle;
- import java.util.Vector;
-
- public abstract class BaseTabbedPanel extends Panel {
- public static final int TOP = 0;
- public static final int BOTTOM = 1;
- public static final int ROUNDED = 0;
- public static final int SQUARE = 1;
- private int TF_LEFT;
- private int TF_RIGHT;
- private int TF_TOP;
- private int TF_BOTTOM;
- private int TF_BTN_HEIGHT;
- private Vector vLabels;
- private Vector vEnabled;
- private Vector vPolys;
- protected int curIndex;
- private Font fReg;
- private Font fSel;
- private Component userPanel;
- private int iTabsPosition;
- private int iTabsStyle;
- private int osAdjustment;
- private int firstVisibleTab;
- private DirectionButton dbLeft;
- private DirectionButton dbRight;
- private Polygon nullPoly;
- private int lastWidth;
- private Insets btpInsets;
-
- public BaseTabbedPanel() {
- this(0, 0);
- }
-
- public BaseTabbedPanel(boolean var1) {
- this(var1 ? 0 : 1, var1 ? 0 : 1);
- }
-
- public BaseTabbedPanel(int var1, int var2) {
- this.TF_LEFT = 9;
- this.TF_RIGHT = -9;
- this.TF_TOP = 30;
- this.TF_BOTTOM = -9;
- this.TF_BTN_HEIGHT = 20;
- this.curIndex = -1;
- this.lastWidth = -1;
- this.vLabels = new Vector();
- this.vEnabled = new Vector();
- this.vPolys = new Vector();
- this.btpInsets = new Insets(0, 0, 0, 0);
- this.setTabsInfo(var1, var2);
- this.fReg = new Font("Helvetica", 0, 12);
- this.fSel = new Font("Helvetica", 1, 12);
- if (System.getProperty("os.name").startsWith("S")) {
- this.osAdjustment = -1;
- } else {
- this.osAdjustment = 0;
- }
-
- super.setLayout((LayoutManager)null);
- this.dbLeft = new DirectionButton(0);
- this.dbRight = new DirectionButton(1);
- this.dbLeft.setShowFocus(false);
- this.dbRight.setShowFocus(false);
- this.dbLeft.shrinkTriangle(1, 1, 0, 1);
- this.dbRight.shrinkTriangle(1, 1, 0, 1);
- super.add(this.dbLeft, -1);
- super.add(this.dbRight, -1);
- this.nullPoly = new Polygon();
- this.nullPoly.addPoint(0, 0);
- this.nullPoly.addPoint(1, 1);
- this.nullPoly.addPoint(0, 0);
- }
-
- public void setTabsPosition(int var1) {
- if (this.iTabsPosition != var1) {
- this.setTabsInfo(var1, this.iTabsStyle);
- }
-
- }
-
- public int getTabsPosition() {
- return this.iTabsPosition;
- }
-
- public void setTabsStyle(int var1) {
- if (this.iTabsStyle != var1) {
- this.setTabsInfo(this.iTabsPosition, var1);
- }
-
- }
-
- public int getTabsStyle() {
- return this.iTabsStyle;
- }
-
- public void setTabsInfo(int var1, int var2) {
- this.iTabsPosition = var1;
- if (this.iTabsPosition == 0) {
- this.iTabsStyle = 0;
- } else {
- this.iTabsStyle = var2;
- }
-
- if (this.iTabsStyle == 0) {
- this.TF_BTN_HEIGHT = 20;
- } else {
- this.TF_BTN_HEIGHT = 17;
- }
-
- ((Component)this).repaint();
- }
-
- public void setPanel(Component var1) {
- this.removeAll();
- this.userPanel = var1;
- if (this.userPanel != null) {
- super.add(this.userPanel, -1);
- this.userPanel.requestFocus();
- }
-
- }
-
- public void showPanel(Component var1) {
- if (this.userPanel != null) {
- this.userPanel.hide();
- }
-
- this.userPanel = var1;
- if (this.userPanel != null) {
- Component[] var2 = ((Container)this).getComponents();
- int var3 = var2.length;
-
- int var4;
- for(var4 = 0; var4 < var3 && var2[var4] != this.userPanel; ++var4) {
- }
-
- if (var4 == var3) {
- super.add(this.userPanel, -1);
- }
-
- this.userPanel.show();
- this.userPanel.requestFocus();
- ((Container)this).validate();
- ((Component)this).repaint();
- }
-
- }
-
- public int addTab(String var1, boolean var2) {
- this.vLabels.addElement(var1);
- this.vEnabled.addElement(new Boolean(var2));
- int var3 = this.vLabels.size() - 1;
- if (this.curIndex == -1 && var2) {
- this.showTab(var3);
- }
-
- return var3;
- }
-
- public synchronized void setTab(String var1, boolean var2, int var3) {
- if (var3 >= 0 && var3 < this.vLabels.size()) {
- if (var3 != this.curIndex || var2) {
- try {
- this.vLabels.setElementAt(var1, var3);
- this.vEnabled.setElementAt(new Boolean(var2), var3);
- ((Component)this).repaint();
- } catch (ArrayIndexOutOfBoundsException var4) {
- }
- }
- }
- }
-
- public synchronized void setLabel(String var1, int var2) {
- if (var2 >= 0 && var2 < this.vLabels.size()) {
- try {
- this.vLabels.setElementAt(var1, var2);
- ((Component)this).repaint();
- } catch (ArrayIndexOutOfBoundsException var3) {
- }
- }
- }
-
- public synchronized String getLabel(int var1) {
- if (var1 >= 0 && var1 < this.vLabels.size()) {
- try {
- return (String)this.vLabels.elementAt(var1);
- } catch (ArrayIndexOutOfBoundsException var2) {
- return "";
- }
- } else {
- return "";
- }
- }
-
- public synchronized void setEnabled(boolean var1, int var2) {
- if (var2 >= 0 && var2 < this.vLabels.size()) {
- if (var2 != this.curIndex || var1) {
- try {
- this.vEnabled.setElementAt(new Boolean(var1), var2);
- ((Component)this).repaint();
- } catch (ArrayIndexOutOfBoundsException var3) {
- }
- }
- }
- }
-
- public void showTab(int var1) {
- if (var1 >= 0 && var1 < this.vLabels.size() && var1 != this.curIndex) {
- if (this.tabIsEnabled(var1)) {
- this.curIndex = var1;
- ((Component)this).invalidate();
- ((Container)this).validate();
- ((Component)this).repaint();
- ((Component)this).postEvent(new Event(this, 1001, (Object)null));
- }
-
- }
- }
-
- public boolean tabIsEnabled(int var1) {
- if (var1 >= 0 && var1 < this.vLabels.size()) {
- try {
- Boolean var2 = (Boolean)this.vEnabled.elementAt(var1);
- if (var2) {
- return true;
- }
- } catch (ArrayIndexOutOfBoundsException var3) {
- }
-
- return false;
- } else {
- return false;
- }
- }
-
- public int currentTabIndex() {
- return this.curIndex;
- }
-
- public void enableTab(boolean var1, int var2) {
- if (var2 >= 0 && var2 < this.vEnabled.size() && var2 != this.curIndex) {
- try {
- this.vEnabled.setElementAt(new Boolean(var1), var2);
- ((Component)this).repaint();
- } catch (ArrayIndexOutOfBoundsException var3) {
- }
- }
- }
-
- public void removeTab(int var1) {
- if (var1 >= 0 && var1 < this.vEnabled.size() && var1 != this.curIndex) {
- try {
- this.vLabels.removeElementAt(var1);
- this.vEnabled.removeElementAt(var1);
- ((Component)this).repaint();
- } catch (ArrayIndexOutOfBoundsException var2) {
- }
- }
- }
-
- public void removeAllTabs() {
- this.vLabels = new Vector();
- this.vEnabled = new Vector();
- this.vPolys = new Vector();
- this.curIndex = -1;
- this.firstVisibleTab = 0;
- this.lastWidth = -1;
- this.removeAll();
- ((Component)this).repaint();
- }
-
- public void layout() {
- Rectangle var1 = ((Component)this).bounds();
- int var2 = var1.width - this.TF_LEFT + this.TF_RIGHT;
- if (var2 >= 0) {
- int var3 = var1.height - this.TF_TOP + this.TF_BOTTOM;
- if (var3 >= 0) {
- int var4 = this.TF_LEFT;
- int var5 = 0;
- if (this.iTabsPosition == 0) {
- var5 = this.TF_TOP;
- } else {
- var5 = this.TF_TOP - this.TF_BTN_HEIGHT;
- }
-
- if (this.userPanel != null) {
- this.userPanel.reshape(var4 + 3, var5 + 3, var2 - 6, var3 - 5);
- this.userPanel.invalidate();
- this.userPanel.validate();
- if (this.userPanel instanceof Canvas || this.userPanel instanceof Panel) {
- this.userPanel.repaint();
- return;
- }
-
- ((Component)this).repaint();
- }
-
- }
- }
- }
-
- public synchronized void paint(Graphics var1) {
- Rectangle var2 = ((Component)this).bounds();
- int var3 = var2.width - this.TF_LEFT + this.TF_RIGHT;
- if (var3 >= 0) {
- int var4 = var2.height - this.TF_TOP + this.TF_BOTTOM;
- if (var4 >= 0) {
- if (var2.width > this.lastWidth) {
- this.firstVisibleTab = 0;
- }
-
- this.lastWidth = var2.width;
- int var5 = this.TF_LEFT;
- Color var7 = var1.getColor();
- var1.setColor(((Component)this).getBackground());
- var1.fillRect(0, 0, var2.width, var2.height);
- int var6;
- if (this.iTabsPosition == 0) {
- var6 = this.TF_TOP;
- } else {
- var6 = this.TF_TOP - this.TF_BTN_HEIGHT;
- }
-
- var1.setColor(Color.white);
- var1.drawLine(var5, var6, var5 + var3 - 1, var6);
- var1.drawLine(var5, var6, var5, var6 + var4 - 1);
- var1.setColor(Color.gray);
- var1.drawLine(var5 + 2, var6 + var4 - 2, var5 + var3 - 2, var6 + var4 - 2);
- var1.drawLine(var5 + var3 - 2, var6 + 2, var5 + var3 - 2, var6 + var4 - 2);
- var1.setColor(Color.black);
- var1.drawLine(var5 + 1, var6 + var4 - 1, var5 + var3 - 1, var6 + var4 - 1);
- var1.drawLine(var5 + var3 - 1, var6 + 1, var5 + var3 - 1, var6 + var4 - 1);
- int var9 = this.TF_LEFT + 8;
- int var12 = 0;
- int var13 = this.TF_LEFT;
- int var14 = this.vLabels.size();
- this.vPolys.removeAllElements();
- Font var16 = var1.getFont();
- FontMetrics var17 = ((Component)this).getFontMetrics(this.fReg);
- FontMetrics var18 = ((Component)this).getFontMetrics(this.fSel);
- int var19 = 0;
-
- int var21;
- for(var21 = 0; var21 < this.firstVisibleTab; ++var21) {
- this.vPolys.addElement(this.nullPoly);
- }
-
- if (var21 > 0) {
- var13 += 2;
- }
-
- for(; var21 < var14; ++var21) {
- Polygon var20 = new Polygon();
-
- try {
- String var15 = (String)this.vLabels.elementAt(var21);
- if (var21 == this.curIndex) {
- var19 = var18.stringWidth(var15);
- } else {
- var19 = var17.stringWidth(var15);
- }
-
- int var10;
- int var11;
- if (this.iTabsPosition == 0) {
- var10 = this.TF_TOP - this.TF_BTN_HEIGHT;
- var11 = this.TF_TOP - 1;
- } else {
- var10 = var2.height + this.TF_BOTTOM + 1;
- var11 = var2.height + this.TF_BOTTOM - this.TF_BTN_HEIGHT;
- }
-
- int var8;
- if (this.iTabsStyle == 0) {
- var8 = var13 + 2;
- var9 = var8 + var19 + 13;
- } else {
- var8 = var9 - 7;
- var9 = var8 + var19 + 28;
- }
-
- if (var9 + 36 - this.TF_RIGHT > var2.width) {
- break;
- }
-
- if (this.iTabsPosition == 0) {
- if (var21 == this.curIndex) {
- var10 -= 3;
- var8 -= 2;
- }
-
- var1.setColor(Color.white);
- if (this.curIndex == var21 + 1) {
- var1.drawLine(var8 + 2, var10, var9 - 2, var10);
- } else {
- var1.drawLine(var8 + 2, var10, var9, var10);
- }
-
- if (this.curIndex != var21 - 1) {
- var1.drawLine(var8, var10 + 2, var8, var11);
- var12 = var8;
- } else {
- var12 = var8 + 1;
- }
-
- var1.drawLine(var8 + 1, var10 + 1, var8 + 1, var10 + 1);
- if (this.curIndex != var21 + 1) {
- var1.setColor(Color.gray);
- var1.drawLine(var9, var10, var9, var11);
- var1.setColor(Color.black);
- var1.drawLine(var9 + 1, var10 + 2, var9 + 1, var11);
- var13 = var9;
- } else {
- var13 = var9 - 1;
- }
- } else if (this.iTabsStyle != 1) {
- if (var21 == this.curIndex) {
- var10 += 3;
- var8 -= 2;
- }
-
- var1.setColor(Color.white);
- if (this.curIndex == var21 + 1) {
- var1.drawLine(var8 + 2, var10, var9 - 2, var10);
- } else {
- var1.drawLine(var8 + 2, var10, var9, var10);
- }
-
- if (this.curIndex != var21 - 1) {
- var1.drawLine(var8, var10 - 2, var8, var11);
- var12 = var8;
- } else {
- var12 = var8 + 1;
- }
-
- var1.drawLine(var8 + 1, var10 - 1, var8 + 1, var10 - 1);
- if (this.curIndex != var21 + 1) {
- var1.setColor(Color.gray);
- var1.drawLine(var9, var10, var9, var11);
- var1.setColor(Color.black);
- var1.drawLine(var9 + 1, var10 - 2, var9 + 1, var11);
- var13 = var9;
- } else {
- var13 = var9 - 1;
- }
- } else {
- var1.setColor(Color.gray);
- var1.drawLine(var8 + 9, var10, var9 - 9, var10);
- var1.setColor(Color.black);
- if (var21 != 0 && var21 != this.curIndex) {
- var1.drawLine(var8 + 4, var10 - 9, var8 + 9, var10);
- var20.addPoint(var8 + 9, var11);
- var20.addPoint(var8 + 4, var10 - 9);
- } else {
- var1.drawLine(var8, var11, var8 + 9, var10);
- var20.addPoint(var8, var11);
- }
-
- var20.addPoint(var8 + 9, var10);
- var20.addPoint(var9 - 9, var10);
- if (var21 + 1 == this.curIndex) {
- var1.drawLine(var9 - 5, var10 - 9, var9 - 9, var10);
- var20.addPoint(var9 - 5, var10);
- var20.addPoint(var9 - 9, var11);
- } else {
- var1.drawLine(var9, var11, var9 - 9, var10);
- var20.addPoint(var9, var11);
- }
-
- if (var21 != 1 && var21 != this.curIndex) {
- var20.addPoint(var8 + 9, var11);
- } else {
- var20.addPoint(var8, var11);
- }
- }
-
- if (var21 == this.curIndex) {
- if (this.iTabsPosition == 0) {
- ++var11;
- } else {
- --var11;
- }
-
- var1.setColor(((Component)this).getBackground());
- var1.drawLine(var8 + 1, var11, var9, var11);
- if (this.iTabsPosition == 1) {
- var1.drawLine(var8 + 1, var11 - 1, var9, var11 - 1);
- }
-
- var1.setFont(this.fSel);
- } else {
- var1.setFont(this.fReg);
- }
-
- if (this.iTabsStyle == 0) {
- var20.addPoint(var12, var11);
- var20.addPoint(var13, var11);
- var20.addPoint(var13, var10);
- var20.addPoint(var12, var10);
- var20.addPoint(var12, var11);
- }
-
- this.vPolys.addElement(var20);
- Boolean var22 = (Boolean)this.vEnabled.elementAt(var21);
- if (var22) {
- var1.setColor(Color.black);
- } else {
- var1.setColor(Color.gray);
- }
-
- if (this.iTabsPosition == 0) {
- var1.drawString(var15, var8 + 8, var10 + 15 + this.osAdjustment);
- } else if (this.iTabsStyle == 0) {
- var1.drawString(var15, var8 + 8, var10 - 6 + this.osAdjustment);
- } else {
- var1.drawString(var15, var8 + 14, var10 - 4 + this.osAdjustment);
- }
- } catch (ArrayIndexOutOfBoundsException var23) {
- }
- }
-
- if (this.firstVisibleTab <= 0 && var21 >= var14) {
- this.dbLeft.hide();
- this.dbRight.hide();
- } else {
- this.dbLeft.show();
- this.dbRight.show();
- if (this.firstVisibleTab > 0) {
- this.dbLeft.enable();
- } else {
- this.dbLeft.disable();
- }
-
- if (var21 < var14) {
- this.dbRight.enable();
- } else {
- this.dbRight.disable();
- }
-
- if (this.iTabsPosition == 0) {
- this.dbLeft.reshape(var2.width - 33 + this.TF_RIGHT, this.TF_TOP - 16, 16, 15);
- this.dbRight.reshape(var2.width - 16 + this.TF_RIGHT, this.TF_TOP - 16, 16, 15);
- } else {
- this.dbLeft.reshape(var2.width - 33 + this.TF_RIGHT, var2.height + this.TF_BOTTOM - this.TF_BTN_HEIGHT, 16, 15);
- this.dbRight.reshape(var2.width - 16 + this.TF_RIGHT, var2.height + this.TF_BOTTOM - this.TF_BTN_HEIGHT, 16, 15);
- }
- }
-
- while(var21 < var14) {
- this.vPolys.addElement(this.nullPoly);
- ++var21;
- }
-
- var1.setFont(var16);
- var1.setColor(var7);
- }
- }
- }
-
- public boolean handleEvent(Event var1) {
- switch (var1.id) {
- case 501:
- int var2 = this.vPolys.size();
-
- for(int var6 = 0; var6 < var2; ++var6) {
- try {
- Polygon var3 = (Polygon)this.vPolys.elementAt(var6);
- if (var3 != this.nullPoly && var3.inside(var1.x, var1.y)) {
- this.showTab(var6);
- return true;
- }
- } catch (ArrayIndexOutOfBoundsException var5) {
- }
- }
- break;
- case 1001:
- if (var1.target == this.dbLeft) {
- if (--this.firstVisibleTab < 0) {
- this.firstVisibleTab = 0;
- } else {
- ((Component)this).repaint();
- }
-
- return true;
- }
-
- if (var1.target == this.dbRight) {
- int var4 = this.vLabels.size();
- if (++this.firstVisibleTab == var4) {
- --this.firstVisibleTab;
- } else {
- ((Component)this).repaint();
- }
-
- return true;
- }
- }
-
- return super.handleEvent(var1);
- }
-
- public Component add(Component var1) {
- return var1;
- }
-
- public synchronized Component add(Component var1, int var2) {
- return var1;
- }
-
- public synchronized Component add(String var1, Component var2) {
- return var2;
- }
-
- public synchronized void remove(Component var1) {
- if (var1 != this.dbLeft && var1 != this.dbRight) {
- super.remove(var1);
- if (var1 == this.userPanel) {
- this.userPanel = null;
- }
-
- }
- }
-
- public synchronized void removeAll() {
- super.removeAll();
- super.add(this.dbLeft, -1);
- super.add(this.dbRight, -1);
- this.userPanel = null;
- }
-
- public void setLayout(LayoutManager var1) {
- }
-
- public Insets insets() {
- this.btpInsets = super.insets();
- Insets var10000 = this.btpInsets;
- var10000.left += this.TF_LEFT + 3;
- var10000 = this.btpInsets;
- var10000.right += 6 - this.TF_RIGHT;
- if (this.iTabsPosition == 0) {
- var10000 = this.btpInsets;
- var10000.top += this.TF_TOP + 3;
- var10000 = this.btpInsets;
- var10000.bottom += 5 - this.TF_BOTTOM;
- } else {
- var10000 = this.btpInsets;
- var10000.top += this.TF_TOP - this.TF_BTN_HEIGHT + 3;
- var10000 = this.btpInsets;
- var10000.bottom += this.TF_BTN_HEIGHT + 5 - this.TF_BOTTOM;
- }
-
- return this.btpInsets;
- }
-
- public Dimension preferredSize() {
- Dimension var1 = ((Component)this).size();
- Dimension var2 = this.minimumSize();
- return new Dimension(Math.max(var1.width, var2.width), Math.max(var1.height, var2.height));
- }
-
- public Dimension minimumSize() {
- if (this.userPanel != null) {
- Dimension var1 = this.userPanel.minimumSize();
- return new Dimension(var1.width + this.btpInsets.left + this.btpInsets.right, var1.height + this.btpInsets.top + this.btpInsets.bottom);
- } else {
- return new Dimension(100, 100);
- }
- }
- }
-